home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / demo / takara / mense.bas < prev    next >
Encoding:
BASIC Source File  |  1995-08-18  |  21.9 KB  |  764 lines

  1. 100 GOTO 1000
  2. 110 *SETTEI
  3. 120 DEF FNXC1(C)=COS(C/180*PI)*100+X:DEF FNYS1(S)=Y-SIN(S/180*PI)*100
  4. 130 DEF FNXC2(C)=COS(C/180*PI)*90+X :DEF FNYS2(S)=Y-SIN(S/180*PI)*90
  5. 140 DEF FNXC3(C)=SIN(C/180*PI)*100  :DEF FNYS3(S)=COS(S/180*PI)*100
  6. 150 DEF FNN1(N) =(N-2)/4            :DEF FNN2(N) =((N-2)/4)+1
  7. 160 RETURN
  8. 170 '
  9. 1000 SCREEN@ 0:CONSOLE 19,5:DEF FONT"システム   16ドット"
  10. 1010 DIM EN%(INT((INT((207+7)/8)*207*4+2-1)/2))
  11. 1020 DIM ZU%(INT((INT((321+7)/8)*145*4+2-1)/2))
  12. 1030 '
  13. 1040 X=400:Y=180:PI=3.14159!:C=5:C2=2:CP=3
  14. 1050 '
  15. 1060 LINE(0,  0)-(639,479),PSET,%5,BF:LINE(2,2)-(637,477),PSET,CP,B
  16. 1070 LINE(12, 6)-(627, 36),PSET,CP,B :LINE(12,324)-(628,473),PSET,CP,B
  17. 1080 LINE(6 , 6)-(8,  473),PSET,CP,B :LINE(631, 6)-(633,473),PSET,CP,B
  18. 1090 LINE(12,40)-(627,320),PSET,0, BF:LINE(14, 42)-(625,318),PSET, 1,B'
  19. 1100 '
  20. 1110 'GOTO 1520'*HAZIME
  21. 1120 '
  22. 1130 *KAIENN
  23. 1140 A1$="えんの  めんせきは  なぜ  ぱいあーるのじじょう  なのか  げきじょう"
  24. 1150 SYMBOL (49,12),A1$,1,1,6
  25. 1160 WAIT 200
  26. 1170 '
  27. 1180 A3$="2"
  28. 1190 RESTORE *KAIENN_W:READ A$,PS
  29. 1200 MOZI=LEN(A$):SPACE=(640-MOZI*8)/2
  30. 1210 FOR I=0 TO MOZI/2-1
  31. 1220   MOZI=LEN(A$):SPACE=(640-MOZI*8)/2
  32. 1230   SYMBOL@(SPACE+16*I,PS),MID$(A$,I*2+1,2),1!,1!,4
  33. 1240   WAIT 15
  34. 1250 NEXT I
  35. 1260 SYMBOL (374,87),A3$,1,1,4:WAIT 100
  36. 1270 '
  37. 1280 FOR J=0 TO 3
  38. 1290   READ A$,PS
  39. 1300   MOZI=LEN(A$):SPACE=(640-MOZI*8)/2
  40. 1310   FOR I=0 TO MOZI/2-1
  41. 1320     SYMBOL@(SPACE+16*I,PS),MID$(A$,I*2+1,2),1!,1!,4
  42. 1330     WAIT 15
  43. 1340   NEXT I
  44. 1350   WAIT 100
  45. 1360 NEXT J
  46. 1370 '
  47. 1380 LINE(12,40)-(627,320),PSET,0, BF:LINE(14, 42)-(625,318),PSET, 1,B'
  48. 1390 A2$="開  演"
  49. 1400 MOZI2=LEN(A2$):SPACE2=(640-MOZI2*8)/2
  50. 1410 SYMBOL (SPACE2,170),A2$,1!,1!,4
  51. 1420 '
  52. 1430 *KAIENN_W
  53. 1440 DATA "円の面積=πγ",90
  54. 1450 DATA "つまり  円周率×半径×半径  で求められます。",120
  55. 1460 DATA "なぜでしょう。分かりますか?",150
  56. 1470 DATA "この劇場では",225
  57. 1480 DATA "その秘密を教えてくれます。",255
  58. 1490 WAIT 200
  59. 1500 '
  60. 1510 LINE(284,161)-(353,195),PSET,0,BF'
  61. 1520 GOSUB *GAMEN
  62. 1530 LINE(22,410)-(620,470),PSET,%5,BF'
  63. 1540 '
  64. 1550 *HAZIME
  65. 1560 GOSUB *MODE_SETTEI
  66. 1570 IF SPEED=1 THEN GOTO 1600
  67. 1580 RESTORE *W1
  68. 1590 GOSUB *COMENT_1
  69. 1600 X=400:Y=180:PI=3.14159!:C=5:C2=2:CP=3
  70. 1610 GOSUB *SETTEI
  71. 1620 LINE(12,40)-(627,320),PSET,0,BF:LINE(14,42)-(625,318),PSET,1,B'
  72. 1630 GOSUB *EN_EGAKU
  73. 1640 GOSUB *GAMEN
  74. 1650 IF SPEED=1 THEN GOTO 1720 
  75. 1660 RESTORE *W1_1
  76. 1670 GOSUB *COMENT_1
  77. 1680 '
  78. 1690 RESTORE *WH1
  79. 1700 GOSUB *HELP
  80. 1710 '
  81. 1720 GOSUB *NYURYOKU
  82. 1730 CLS 4:PS=353
  83. 1740 LINE(22,410)-(620,470),PSET,%5,BF
  84. 1750 IF SPEED=1 THEN GOTO 1780
  85. 1760 GOSUB *COMENT_2
  86. 1770 '
  87. 1780 IF SPEED=0 THEN GOTO 1880
  88. 1790 RESTORE *W16
  89. 1800 GOSUB *GAMEN
  90. 1810 A1$="現在  ハイスピードモードで実行中です。"
  91. 1820 A2$="解説付きで見たい人は、 これが終わったら解説付きモードで見てね。"
  92. 1830 MOZI1=LEN(A1$):SPACE1=(640-MOZI1*8)/2
  93. 1840 MOZI2=LEN(A2$):SPACE2=(640-MOZI2*8)/2
  94. 1850 SYMBOL@(SPACE1,353),A1$,1!,1!,4
  95. 1860 SYMBOL@(SPACE2,377),A2$,1!,1!,4
  96. 1870 ' 
  97. 1880 KAKU=360/M:TKAKU=KAKU/2:KAISU_1=(M-2)/2:KAISU_2=M:KESI=0
  98. 1890 XB=FNXC3(TKAKU):YB=FNYS3(TKAKU)
  99. 1900 '
  100. 1910 GOSUB *BUNKATUSEN
  101. 1920 GOSUB *IROTUKE
  102. 1930 '
  103. 1940 GET@A(296,77)-(502,283),EN%
  104. 1950 '
  105. 1960 IF SPEED=1 THEN GOTO 2090'
  106. 1970 RESTORE *W2
  107. 1980 GOSUB *GAMEN
  108. 1990 GOSUB *COMENT_1
  109. 2000 '
  110. 2010 'GOTO 1970'
  111. 2020 *YAZIRUSI
  112. 2030 FOR J=0 TO 2
  113. 2040   LINE (250,160)-(270,190),PSET,0,BF:WAIT 50
  114. 2050   LINE (260,175)-(270,185),PSET,2,BF
  115. 2060   CONNECT (250,180)-(260,170)-(260,190)-(250,180),2,PSET,F,2:WAIT 50
  116. 2070 NEXT
  117. 2080 '
  118. 2090 PUT@A(26, 77)-(233,283),EN%:WAIT 200
  119. 2100 LINE (250,160)-(270,190),PSET,0,BF:WAIT 50
  120. 2110 '  GOTO 1815
  121. 2120 IF M MOD 4=0 THEN GOSUB *MAIN_1
  122. 2130 IF M MOD 4=2 THEN GOSUB *MAIN_2
  123. 2140 '
  124. 2150 GOTO *OWARI
  125. 2160 '
  126. 2170 *GAMEN
  127. 2180 LINE(22,344)-(618,400),PSET,%1,BF
  128. 2190 LINE(24,346)-(616,398),PSET,%3,B
  129. 2200 RETURN
  130. 2210 '
  131. 2220 *COMENT_1
  132. 2230 FOR J=0 TO 1
  133. 2240   READ A$,PS
  134. 2250   MOZI=LEN(A$):SPACE=(640-MOZI*8)/2
  135. 2260   FOR I=0 TO MOZI/2-1
  136. 2270     SYMBOL@(SPACE+16*I,PS),MID$(A$,I*2+1,2),1!,1!,4
  137. 2280     WAIT 10
  138. 2290   NEXT I
  139. 2300   WAIT 100
  140. 2310 NEXT J
  141. 2320 RETURN
  142. 2330 '
  143. 2340 *W1
  144. 2350 DATA "円の面積は求めにくいので, 円をいくつかに切って並べ変えてみます。",353
  145. 2360 DATA "円は,あなたの指示で TOWNS君が切ってくれますよ。",377
  146. 2370 '
  147. 2380 *W1_1
  148. 2390 DATA "上の円を切ります。いくつに切るか偶数で入力して下さい。",353
  149. 2400 DATA "  ",377
  150. 2410 '
  151. 2420 *W2
  152. 2430 DATA "後で分かりやすくするために、 この円を左側にコピーしておきます。",353
  153. 2440 DATA "右と左は同じ円です。",377
  154. 2450 '
  155. 2460 *W3
  156. 2470 DATA "円を切って置き換えてみます。置き換えた部分は,緑色で表示します。",353
  157. 2480 DATA "まず,上半分の部分を置き換えます。",377
  158. 2490 '
  159. 2500 *W4
  160. 2510 DATA "同じように。",353
  161. 2520 DATA "下半分の部分を置き換えます。",377
  162. 2530 '
  163. 2540 *W5
  164. 2550 DATA "下の部分を, 上のすきまに埋め込んでいってみます。",353
  165. 2560 DATA "一つ一つ移動します。",377
  166. 2570 '
  167. 2580 *W6
  168. 2590 DATA "左の桃色の円を切って,並べ変えたのが,右の図形です。",353
  169. 2600 DATA "左の円と右の図形は同じ面積です。",377
  170. 2610 '
  171. 2620 *W7
  172. 2630 DATA "もう少し形を見やすくするために",353
  173. 2640 DATA "一番右側の図形を左端に移動させます。",377
  174. 2650 '
  175. 2660 *W8
  176. 2670 DATA "左の図形は円ですが,右の図形は,長方形に近いですね。",353
  177. 2680 DATA "面積は, 右の図形も左の図形も同じです。",377
  178. 2690 '
  179. 2700 *W9
  180. 2710 DATA "とすると,円の面積は",353
  181. 2720 DATA "右のような長方形に置き換えて求めることができます。",377
  182. 2730 '
  183. 2740 *W10
  184. 2750 DATA "右の長方形(に近い形)で",353
  185. 2760 DATA "縦は  円の半径,横は 円周の長さの半分 です。",377
  186. 2770 '
  187. 2780 *W11
  188. 2790 DATA "円周の長さは   2×円周率×半径",214
  189. 2800 DATA "円周の長さの半分は 円周率×半径",238
  190. 2810 '
  191. 2820 *W12
  192. 2830 DATA "右の図形の面積は ",214
  193. 2840 DATA "縦(半径)×横(円周の長さの半分)",238
  194. 2850 DATA "縦(半径)×横(円周率×半径)",262
  195. 2860 '
  196. 2870 *W13
  197. 2880 DATA "左側の円の面積は, 右の図形の面積と同じなので",353
  198. 2890 DATA "縦(半径)×横(円周率×半径)つまり 円周率×半径×半径 です。",377
  199. 2900 '
  200. 2910 *W14
  201. 2920 DATA "右側の図形は, 分ける数を多くすれば長方形に近づき、 ",353
  202. 2930 DATA "小さくすれば, 形がゆがみます。色々試してください。",377
  203. 2940 '
  204. 2950 *W15
  205. 2960 DATA "☆  ☆  ☆    ま  と  め    ☆  ☆  ☆  ",353
  206. 2970 DATA "円の面積=円周率×半径×半径",377
  207. 2980 '
  208. 2990 *W16
  209. 3000 DATA "現在  ハイスピードモードで実行中です。",353
  210. 3010 DATA "解説付きで見たい人は,これが終わったら解説付きモードを選んでね。",377
  211. 3020 '
  212. 3030 *WH1
  213. 3040 DATA "HELP   数字はキーボードから入力しリターンキーを押してね。",414
  214. 3050 '
  215. 3060 *WH2
  216. 3070 DATA "HELP   4以上の数字を入力して下さい。",414
  217. 3080 '
  218. 3090 *WH3
  219. 3100 DATA "HELP   偶数を入力して下さい。",414
  220. 3110 '
  221. 3120 *WH4
  222. 3130 DATA "HELP   180以下の数字を入力して下さい。",414
  223. 3140 '
  224. 3150 *WH5
  225. 3160 DATA "お  わ  る      も一度やる      メニューへ",425
  226. 3170 '
  227. 3180 *COMENT_2
  228. 3190 GOSUB *GAMEN
  229. 3200 M$=STR$(M):A$="上の円を    個に切ります。"
  230. 3210 MOZI=LEN(A$):SPACE=(640-MOZI*8)/2
  231. 3220 FOR I=0 TO MOZI/2-1
  232. 3230   SYMBOL@(SPACE+16*I,PS),MID$(A$,I*2+1,2),1!,1!,4
  233. 3240   WAIT 10
  234. 3250 NEXT I
  235. 3260 SYMBOL@(SPACE+16*4,PS),M$,1!,1!,4
  236. 3270 WAIT 100
  237. 3280 RETURN
  238. 3290 '
  239. 3370 *EN_EGAKU
  240. 3380 CIRCLE (X,Y),100,C,1,,,N
  241. 3390 RETURN
  242. 3400 '
  243. 3410 *NYURYOKU
  244. 3420 CLS 4:LOCATE 15,20:COLOR 4:INPUT"円を いくつに切りますか(4以上の偶数)       ";M
  245. 3430 IF M<=3      THEN GOSUB *TIISAI
  246. 3440 IF M MOD 2=1 THEN GOSUB *KISUU
  247. 3450 IF M>180     THEN GOSUB *OOKII
  248. 3460 IF M=>4  AND M<=8  THEN TW=25
  249. 3470 IF M=>10 AND M<=16 THEN TW=15
  250. 3480 IF M=>18 AND M<=30 THEN TW=8
  251. 3490 IF M=>32 AND M<=60 THEN TW=4
  252. 3500 IF M=>62 AND M<=90 THEN TW=2
  253. 3510 IF M=>92           THEN TW=1
  254. 3520 RETURN 
  255. 3530 '
  256. 3540 *TIISAI
  257. 3550 RESTORE *WH2
  258. 3560 GOSUB *HELP
  259. 3570 WAIT 100:GOTO 3420
  260. 3580 *KISUU
  261. 3590 RESTORE *WH3
  262. 3600 GOSUB *HELP
  263. 3610 WAIT 100:GOTO 3420
  264. 3620 *OOKII
  265. 3630 RESTORE *WH4
  266. 3640 GOSUB *HELP
  267. 3650 WAIT 100:GOTO 3420
  268. 3660 '
  269. 3670 *BUNKATUSEN
  270. 3680 KAKU_2=KAKU:N=4:KN1=FNN1(M):KN2=FNN2(M)
  271. 3690 LINE (X-100,Y)-(X+100,Y),PSET,C':WAIT TW
  272. 3700 FOR J=1 TO KAISU_1
  273. 3710   XC1=FNXC1(KAKU_2):YS1=FNYS1(KAKU_2)
  274. 3720   XC2=X-(XC1-X):YS2=Y+(Y-YS1)
  275. 3730   IF J=KN1 THEN GOSUB *KIROKU1
  276. 3740   IF J=KN2 THEN GOSUB *KIROKU2
  277. 3750   LINE (XC1,YS1)-(XC2,YS2),PSET,C
  278. 3760   N=N+2:KAKU_2=KAKU_2+KAKU:WAIT TW
  279. 3770 NEXT
  280. 3780 RETURN
  281. 3790 '
  282. 3800 *KIROKU1
  283. 3810 KNX1=XC1:KNY1=YS1
  284. 3820 KNX3=XC2:KNY3=YS2
  285. 3830 RETURN
  286. 3840 '
  287. 3850 *KIROKU2
  288. 3860 KNX2=XC1:KNY2=YS1
  289. 3870 KNX4=XC2:KNY4=YS2
  290. 3880 RETURN
  291. 3890 '
  292. 3900 *IROTUKE
  293. 3910 KAKU_2=KAKU/2:N=1
  294. 3920 FOR J=1 TO KAISU_2
  295. 3930   XC1=FNXC2(KAKU_2):YS1=FNYS2(KAKU_2)
  296. 3940   PAINT(XC1,YS1),&H0B0B0B0BB0B0B0B0,C
  297. 3950   N=N+1:KAKU_2=KAKU_2+KAKU:WAIT TW
  298. 3960 NEXT
  299. 3970 RETURN
  300. 3980 '
  301. 3990 *MAIN_1
  302. 4000 KAKU_IRO=KAKU/2:KAKU_SEN=KAKU:N=1:YE_CHE=0
  303. 4010 XT1=X:YT1=Y-100:XBT=XB:YBT=YB:XZ=3:YZ=2
  304. 4020 XH1=XT1+1:YH1=YT1-1:XH2=X+100:YH2=Y-1:LC=1
  305. 4030 IF SPEED=1 THEN GOTO 4070
  306. 4040 RESTORE *W3
  307. 4050 GOSUB *GAMEN
  308. 4060 GOSUB *COMENT_1
  309. 4070 GOSUB *SAGYOU
  310. 4080 '
  311. 4090 LINE (X,Y)-(X,Y-100),PSET,C'
  312. 4100 KAKU_IRO=90+(KAKU/2):KAKU_SEN=90+KAKU:YE_CHE=0
  313. 4110 XT1=X:YT1=Y-100:XBT=-XB:YBT=YB:XZ=-3:YZ=2
  314. 4120 XH1=X-100:YH1=Y-101:XH2=XT1-1:YH2=Y-1:LC=0:GY=-100:GC1=C:GC2=0
  315. 4130 HAZI=1
  316. 4140 GOSUB *SAGYOU
  317. 4150 '
  318. 4160 KAKU_IRO=180+(KAKU/2):KAKU_SEN=180+KAKU:YE_CHE=1
  319. 4170 XT1=X:YT1=Y+100:XBT=-XB:YBT=-YB:XZ=-3:YZ=-2
  320. 4180 XH1=X-100:YH1=Y:XH2=XT1-1:YH2=YT1-1:GY=100:GC1=0:GC2=C
  321. 4190 IF SPEED=1 THEN GOTO 4230
  322. 4200 RESTORE *W4
  323. 4210 GOSUB *GAMEN
  324. 4220 GOSUB *COMENT_1
  325. 4230 HAZI=0
  326. 4240 GOSUB *SAGYOU
  327. 4250 '
  328. 4260 KAKU_IRO=270+(KAKU/2):KAKU_SEN=270+KAKU:YE_CHE=1
  329. 4270 XT1=X:YT1=Y+100:XBT=XB:YBT=-YB:XZ=3:YZ=-2
  330. 4280 XH1=X+100:YH1=Y:XH2=XT1+1:YH2=YT1-1:LC=2:GC2=0
  331. 4290 LINE (X,Y+100)-(X,Y),PSET,C
  332. 4300 GOSUB *SAGYOU
  333. 4310 '
  334. 4320 WAIT 100'
  335. 4330 XT1=X:YT1=Y+100:X1_X=X_X:Y1_Y=Y_Y:XBT=XB :YBT=-YB:XZ=3 :YZ=-2:HAZI=1
  336. 4340 IF SPEED=1 THEN GOTO 4380
  337. 4350 RESTORE *W5
  338. 4360 GOSUB *GAMEN
  339. 4370 GOSUB *COMENT_1
  340. 4380 GOSUB *KESI_KAKI
  341. 4390 '
  342. 4400 XT1=X:YT1=Y+100:X1_X=X_X:Y1_Y=Y_Y:XBT=-XB:YBT=-YB:XZ=-3:YZ=-2:HAZI=2
  343. 4410 GOSUB *KESI_KAKI
  344. 4420 GOSUB *RL_IDOU
  345. 4430 '
  346. 4440 GET@A(240,49)-(560,193),ZU%
  347. 4450 LINE(240,49)-(560,193),PSET,0,BF
  348. 4460 PUT@A(272,52)-(592,196),ZU%'X=+32:Y=+3
  349. 4470 '
  350. 4480 GOSUB *KAISETU
  351. 4490 '
  352. 4500 RETURN
  353. 4510 '
  354. 4520 *RL_IDOU
  355. 4530 IF SPEED=1 THEN GOTO 4580
  356. 4540 RESTORE *W6
  357. 4550 GOSUB *GAMEN
  358. 4560 GOSUB *COMENT_1
  359. 4570 '
  360. 4580 LINE (XEND1,YEND1)-(XEND1,YTOP1),PSET,2
  361. 4590 IF SPEED=1 THEN GOTO 4630
  362. 4600 RESTORE *W7
  363. 4610 GOSUB *GAMEN
  364. 4620 GOSUB *COMENT_1
  365. 4630 LINE (XEND1+1,YEND1-1)-(620,YTOP1+1),PSET,0,BF'
  366. 4640 WAIT 100
  367. 4650 '
  368. 4660 LINE (XEND2,YEND2)-(XEND2,YEND2+100),PSET,2
  369. 4670 LINE (XEND2,YEND2+100)-(XEND3,YEND3),PSET,2'
  370. 4680 PAINT(XEND2+2,YEND2+90),&H0C0C0C0CC0C0C0C0,2
  371. 4690 WAIT 100
  372. 4700 RETURN
  373. 4710 '
  374. 4720 *KAISETU
  375. 4730 IF SPEED=1 THEN GOTO 5760
  376. 4740 RESTORE *W8
  377. 4750 GOSUB *GAMEN
  378. 4760 GOSUB *COMENT_1
  379. 4770 WAIT 100
  380. 4780 '
  381. 4790 RESTORE *W9
  382. 4800 GOSUB *GAMEN
  383. 4810 GOSUB *COMENT_1
  384. 4820 WAIT 100
  385. 4830 '
  386. 4840 RESTORE *W10
  387. 4850 GOSUB *GAMEN
  388. 4860 GOSUB *COMENT_1
  389. 4870 WAIT 100
  390. 4880 '
  391. 4890 FOR I=0 TO 4
  392. 4900   LINE(130,81)-(130,181),PSET,2
  393. 4910   LINE (XEND2+24,YEND2+3)-(XEND2+24,YEND2+3+100),PSET,5
  394. 4920   A$="縦は  円の半径":SYMBOL@(SPACE,377),A$,1!,1!,6:WAIT 50
  395. 4930   LINE(130,81)-(130,181),PSET,5
  396. 4940   LINE (XEND2+24,YEND2+3)-(XEND2+24,YEND2+3+100),PSET,0
  397. 4950   A$="縦は  円の半径":SYMBOL@(SPACE,377),A$,1!,1!,4:WAIT 50
  398. 4960 NEXT
  399. 4970 '
  400. 4980 FOR I=0 TO 4
  401. 4990   CIRCLE(131,180),108,5,1,.5!,1,N,PSET
  402. 5000   LINE (XEND2+32,YEND2+3-15)-(XEND1+32,YEND2+3-15),PSET,5
  403. 5010   A$="                横は  円周の長さの半分":SYMBOL@(SPACE,377),A$,1!,1!,6:WAIT 50
  404. 5020   CIRCLE(131,180),108,0,1,.5!,1,N,PSET
  405. 5030   LINE (XEND2+32,YEND2+3-15)-(XEND1+32,YEND2+3-15),PSET,0
  406. 5040   A$="                横は  円周の長さの半分":SYMBOL@(SPACE,377),A$,1!,1!,4:WAIT 50
  407. 5050 NEXT
  408. 5060 '
  409. 5070 LINE (XEND2+24,YEND2+3)-(XEND2+24,YEND2+3+100),PSET,5
  410. 5080 LINE (XEND2+32,YEND2+3-15)-(XEND1+32,YEND2+3-15),PSET,5
  411. 5090 WAIT 250
  412. 5100 '
  413. 5110 RESTORE *W11
  414. 5120 CIRCLE(131,180),108,6,1,1,1,N,PSET
  415. 5130 READ A$,PS
  416. 5140 MOZI=LEN(A$):SPACE=(640-MOZI*8)/2
  417. 5150 FOR I=0 TO MOZI/2-1
  418. 5160   SYMBOL@(296+16*I,PS),MID$(A$,I*2+1,2),1!,1!,4
  419. 5170   WAIT 10
  420. 5180 NEXT I
  421. 5190 WAIT 100
  422. 5200 '
  423. 5210 FOR J=0 TO 3
  424. 5220   CIRCLE(131,180),108,0,1,1,1,N,PSET
  425. 5230   SYMBOL@(296,PS),A$,1!,1!,0:WAIT 50
  426. 5240   CIRCLE(131,180),108,6,1,1,1,N,PSET
  427. 5250   SYMBOL@(296,PS),A$,1!,1!,4:WAIT 50
  428. 5260 NEXT
  429. 5270 '
  430. 5280 CIRCLE(131,180),112,5,1,.5!,1,N,PSET
  431. 5290 CIRCLE(131,180),108,6,1,.5!,1,N,PSET
  432. 5300 READ A$,PS
  433. 5310 MOZI=LEN(A$):SPACE=(640-MOZI*8)/2
  434. 5320 FOR I=0 TO MOZI/2-1
  435. 5330   SYMBOL@(296+16*I,PS),MID$(A$,I*2+1,2),1!,1!,4
  436. 5340   WAIT 10
  437. 5350 NEXT I
  438. 5360 WAIT 100
  439. 5370 '
  440. 5380 FOR J=0 TO 3
  441. 5390   CIRCLE(131,180),112,0,1,.5!,1,N,PSET
  442. 5400   CIRCLE(131,180),108,6,1,0,1,N,PSET
  443. 5410   SYMBOL@(296,PS),A$,1!,1!,0:WAIT 50
  444. 5420   CIRCLE(131,180),112,5,1,.5!,1,N,PSET
  445. 5430   CIRCLE(131,180),108,6,1,1,1,N,PSET
  446. 5440   SYMBOL@(296,PS),A$,1!,1!,4:WAIT 50
  447. 5450 NEXT
  448. 5460 WAIT 100
  449. 5470 '
  450. 5480 LINE(269,202)-(593,283),PSET,0,BF
  451. 5490 '
  452. 5500 RESTORE *W12
  453. 5510 FOR J=0 TO 2'
  454. 5520 READ A$,PS
  455. 5530 MOZI=LEN(A$):SPACE=(640-MOZI*8)/2
  456. 5540   FOR I=0 TO MOZI/2-1
  457. 5550     SYMBOL@(296+16*I,PS),MID$(A$,I*2+1,2),1!,1!,4
  458. 5560     WAIT 10
  459. 5570   NEXT I
  460. 5580 NEXT J
  461. 5590 WAIT 100
  462. 5600 '
  463. 5610 RESTORE *W13
  464. 5620 GOSUB *GAMEN
  465. 5630 GOSUB *COMENT_1
  466. 5640 WAIT 100
  467. 5650 '
  468. 5660 RESTORE *W14
  469. 5670 GOSUB *GAMEN
  470. 5680 GOSUB *COMENT_1
  471. 5690 WAIT 100
  472. 5700 '
  473. 5710 RESTORE *W15
  474. 5720 GOSUB *GAMEN
  475. 5730 GOSUB *COMENT_1
  476. 5740 WAIT 100
  477. 5750 '
  478. 5760 RETURN
  479. 5770 '
  480. 5780 *SAGYOU
  481. 5790 GOSUB *IROKESI
  482. 5800 GOSUB *SENKESI
  483. 5810 LINE(XH1,YH1)-(XH2,YH2),PSET,0,BF
  484. 5820 IF LC=1 THEN GOTO 5860
  485. 5830 IF LC=2 THEN GOTO 5850
  486. 5840 LINE(X-100,Y)-(X,Y),PSET,GC1
  487. 5850 LINE(X,Y)-(X,Y+GY),PSET,GC2
  488. 5860 GOSUB *KAKIKOMI
  489. 5870 RETURN
  490. 5880 '
  491. 5890 *IROKESI
  492. 5900 FOR J=1 TO M/4
  493. 5910   XC1=FNXC2(KAKU_IRO):YS1=FNYS2(KAKU_IRO)
  494. 5920   PAINT(XC1,YS1),&H00000000,C
  495. 5930   N=N+1:KAKU_IRO=KAKU_IRO+KAKU:WAIT TW
  496. 5940 NEXT
  497. 5950 RETURN
  498. 5960 '
  499. 5970 *SENKESI
  500. 5980 FOR J=1 TO M/4
  501. 5990   XC1=FNXC1(KAKU_SEN):YS1=FNYS1(KAKU_SEN)
  502. 6000   LINE (XC1,YS1)-(X,Y),PSET,0
  503. 6010   KAKU_SEN=KAKU_SEN+KAKU
  504. 6020 NEXT
  505. 6030 IF YE_CHE=1 THEN GOTO 6050
  506. 6040 LINE (X,Y)-(X,Y-100),PSET,C
  507. 6050 RETURN
  508. 6060 '
  509. 6070 *KAKIKOMI
  510. 6080 FOR J=1 TO M/4
  511. 6090   XB11=XT1      :YB11=YT1
  512. 6100   IF KESI>0 THEN GOTO 6130
  513. 6110   IF J>1 THEN GOTO 6130
  514. 6120   X_X=XT1+XBT   :Y_Y=YT1+YBT':Y_Y=FIX(YB12)
  515. 6130   XB12=XT1+XBT  :YB12=YT1+YBT:YB12=FIX(YB12)
  516. 6140   XB13=XT1+2*XBT:YB13=YT1
  517. 6150   IF YE_CHE=1 THEN GOTO 6170
  518. 6160   XE1=XT1+XBT   :YE1=YT1+YBT-100 :GOTO 6180
  519. 6170   XE1=XT1+XBT   :YE1=YT1+YBT+100
  520. 6180   LINE (XB12,YB12)-(XB13,YB13),PSET,C2
  521. 6190   LINE (XB11,YB11)-(XB12,YB12),PSET,C2
  522. 6200   CIRCLE (XB11,YB11)-(XE1,YE1)-(XB13+1,YB13),C2,PSET
  523. 6210   PAINT(XT1+XZ,YT1+YZ),&H0C0C0C0CC0C0C0C0,C2:GOTO 6220
  524. 6220   XT1=XB13:YT1=YB13:WAIT TW
  525. 6230 NEXT
  526. 6240 IF HAZI=1 THEN GOTO *YOMI ELSE GOTO *YOMI2
  527. 6250 *YOMI:XEND2=XB13:YEND2=YB13:XEND3=XB12:YEND3=YB12:GOTO *YOMI2
  528. 6260 *YOMI2
  529. 6270 KESI=KESI+1
  530. 6280 RETURN
  531. 6290 '
  532. 6300 *KESI_KAKI
  533. 6310 FOR J=1 TO M/4
  534. 6320 '
  535. 6330   XB11=XT1      :YB11=YT1
  536. 6340   XB12=XT1+XBT  :YB12=YT1+YBT:YB12=FIX(YB12)
  537. 6350   XB13=XT1+2*XBT:YB13=YT1
  538. 6360   XE1=XT1+XBT   :YE1=YT1+YBT+100
  539. 6370 '
  540. 6380   XB21=X1_X      :YB21=Y1_Y
  541. 6390   XB22=X1_X+XBT  :YB22=Y1_Y+YBT':YB22=FIX(YB22)
  542. 6400   XB23=X1_X+2*XBT:YB23=Y1_Y
  543. 6410   XE2=X1_X+XBT   :YE2=Y1_Y+YBT+100
  544. 6420 '
  545. 6430   CONNECT (XB12,YB12)-(XB11,YB11)-(XB11,YE1)-(XB13,YE1)-(XB13,YB13)-(XB12,YB12),0,PSET,F,0
  546. 6440   WAIT TW
  547. 6450 '
  548. 6460   LINE (XB22,YB22)-(XB23,YB23),PSET,C2
  549. 6470   LINE (XB21,YB21)-(XB22,YB22),PSET,C2
  550. 6480   CIRCLE (XB21,YB21)-(XE2,YE2)-(XB23+1,YB23),C2,PSET
  551. 6490   PAINT(X1_X+XZ,Y1_Y+YZ),&H0C0C0C0CC0C0C0C0,C2
  552. 6500   WAIT TW
  553. 6510 '
  554. 6520   X1_X=XB23:Y1_Y=YB23
  555. 6530   XT1=XB13:YT1=YB13
  556. 6540   IF HAZI=1 THEN GOTO *YOMI3 ELSE *YOMI4
  557. 6550 '
  558. 6560   *YOMI3:XEND1=XB22:YEND1=YB22:YTOP1=YE2:GOTO *YOMI4
  559. 6570   *YOMI4
  560. 6580 NEXT
  561. 6590 RETURN
  562. 6600 '
  563. 6610 *MAIN_2
  564. 6620 IF SPEED=1 THEN GOTO 6660
  565. 6630 RESTORE *W3
  566. 6640 GOSUB *GAMEN
  567. 6650 GOSUB *COMENT_1
  568. 6660 KAKU_IRO=KAKU/2:KAKU_SEN=KAKU:N=1:YE_CHE=0:KESI1=1
  569. 6670 XBT=XB:YBT=YB:XT1=KNX1:YT1=KNY1-1:XZ=3:YZ=2
  570. 6680 GOSUB *IROKESI2
  571. 6690 GOSUB *SENKESI2
  572. 6700 LINE(KNX1+1,KNY1+1)-(X+101,Y-1),PSET,0,BF
  573. 6710 LINE(X-100,Y)-(X+100,Y),PSET,C,BF
  574. 6720 HAZI=2
  575. 6730 GOSUB *KAKIKOMI2
  576. 6740 '
  577. 6750 KAKU_IRO=90+TKAKU+(KAKU/2):KAKU_SEN=90+TKAKU+KAKU:YE_CHE=0
  578. 6760 XBT=-XB:YBT=YB:XT1=KNX2:YT1=KNY2-1:XZ=-3:YZ=2:KESI1=2
  579. 6770 GOSUB *IROKESI2
  580. 6780 GOSUB *SENKESI2
  581. 6790 LINE(KNX2-1,KNY2+1)-(X-101,Y-1),PSET,0,BF
  582. 6800 HAZI=1
  583. 6810 GOSUB *KAKIKOMI2
  584. 6820 KNXL=KNX2:KNY=KNY2-1:KNXR=KNX1:YNAKA=Y-1:KNY0=KNY+1
  585. 6830 YE0=YE1+1:YP=Y-90
  586. 6840 GOSUB *NAKA_KAKI
  587. 6850 '
  588. 6860 IF SPEED=1 THEN GOTO 6940
  589. 6870 RESTORE *W4'
  590. 6880 GOSUB *GAMEN
  591. 6890 GOSUB *COMENT_1
  592. 6900 '
  593. 6940 LINE (X-100,Y)-(X,Y),PSET,C
  594. 6950 KAKU_IRO=180+(KAKU/2):KAKU_SEN=180+KAKU:YE_CHE=1:KESI1=0
  595. 6960 XT1=KNX3:YT1=KNY3+1:XBT=-XB:YBT=-YB:XZ=-3:YZ=-2
  596. 6970 GOSUB *IROKESI2
  597. 6980 GOSUB *SENKESI2
  598. 6990 LINE(X-100,Y)-(X-1,Y),PSET,0:LINE(KNX3-1,KNY3+1)-(X-101,Y),PSET,0,BF
  599. 7000 HAZI=2
  600. 7010 GOSUB *KAKIKOMI2
  601. 7020 '
  602. 7030 LINE (X,Y)-(KNX3,KNY3+1),PSET,C
  603. 7040 KAKU_IRO=270+TKAKU+(KAKU/2):KAKU_SEN=270+TKAKU+KAKU:YE_CHE=1
  604. 7050 XBT=XB:YBT=-YB:XT1=KNX4:YT1=KNY4+1:XZ=3:YZ=-2
  605. 7060 GOSUB *IROKESI2
  606. 7070 GOSUB *SENKESI2
  607. 7080 LINE (X,Y)-(X+100,Y),PSET,0:LINE(KNX4+1,KNY4+1)-(X+100,Y),PSET,0,BF
  608. 7090 GOSUB *KAKIKOMI2
  609. 7100 KNXL=KNX3:KNY=KNY3+1:KNXR=KNX4:YNAKA=Y+1:KNY0=KNY-1
  610. 7110 YE0=YE1-1:YP=Y+90
  611. 7120 GOSUB *NAKA_KAKI
  612. 7130 '
  613. 7140 WAIT 100'
  614. 7150 IF SPEED=1 THEN GOTO 7190
  615. 7160 RESTORE *W5
  616. 7170 GOSUB *GAMEN
  617. 7180 GOSUB *COMENT_1
  618. 7190 XT1=KNX4:YT1=KNY4+1:X1_X=XR_X:Y1_Y=YR_Y:XBT=XB :YBT=-YB:XZ=3 :YZ=-2
  619. 7200 MJ=M/4:PP=1:HAZI=1
  620. 7210 GOSUB *KESI_KAKI2
  621. 7220  '
  622. 7230 XT1=KNX3+2*XB:YT1=KNY3+1:X1_X=XR_X:Y1_Y=YR_Y:XBT=-XB:YBT=-YB:XZ=-3:YZ=-2
  623. 7240 MJ=M/4+1:PP=2:HAZI=2
  624. 7250 GOSUB *KESI_KAKI2
  625. 7260 GOSUB *RL_IDOU
  626. 7270 '
  627. 7280 GET@A(240,49)-(560,193),ZU%
  628. 7290 LINE(240,49)-(560,193),PSET,0,BF
  629. 7300 PUT@A(272,52)-(592,196),ZU%'X=+32:Y=+3
  630. 7310 '
  631. 7320 GOSUB *KAISETU
  632. 7330 '
  633. 7340 RETURN
  634. 7350 '
  635. 7360 *IROKESI2
  636. 7370 FOR J=1 TO (M/4)
  637. 7380   XC1=FNXC2(KAKU_IRO):YS1=FNYS2(KAKU_IRO)
  638. 7390   PAINT(XC1,YS1),&H00000000,C
  639. 7400   N=N+1:KAKU_IRO=KAKU_IRO+KAKU:WAIT TW
  640. 7410 NEXT
  641. 7420 RETURN
  642. 7430 '
  643. 7440 *SENKESI2
  644. 7450 FOR J=1 TO (M/4)-1
  645. 7460   XC1=FNXC1(KAKU_SEN):YS1=FNYS1(KAKU_SEN)
  646. 7470   LINE (XC1,YS1)-(X,Y),PSET,0
  647. 7480   KAKU_SEN=KAKU_SEN+KAKU
  648. 7490 NEXT
  649. 7500 RETURN
  650. 7510 '
  651. 7520 *KAKIKOMI2
  652. 7530 FOR J=1 TO M/4
  653. 7540   XB11=XT1:YB11=YT1
  654. 7550   IF KESI>0  THEN GOTO 7610
  655. 7560   IF J>1     THEN GOTO 7610
  656. 7570   IF KESI1=1 THEN GOTO 7600
  657. 7580   IF KESI1=2 THEN GOTO 7610
  658. 7590   GOTO 7610
  659. 7600   XR_X=XT1+XBT   :YR_Y=YT1+YBT:GOTO 7610
  660. 7610   XB12=XT1+XBT  :YB12=YT1+YBT:YB12=FIX(YB12)
  661. 7620   XB13=XT1+2*XBT:YB13=YT1
  662. 7630   IF YE_CHE=1 THEN GOTO 7650
  663. 7640   XE1=XT1+XBT   :YE1=YT1+YBT-100 :GOTO 7660
  664. 7650   XE1=XT1+XBT   :YE1=YT1+YBT+100
  665. 7660   LINE (XB12,YB12)-(XB13,YB13),PSET,C2
  666. 7670   LINE (XB11,YB11)-(XB12,YB12),PSET,C2
  667. 7680   CIRCLE (XB11,YB11)-(XE1,YE1)-(XB13+1,YB13),C2,PSET
  668. 7690   PAINT(XT1+XZ,YT1+YZ),&H0C0C0C0CC0C0C0C0,C2:GOTO 7700
  669. 7700   XT1=XB13:YT1=YB13:WAIT TW
  670. 7710 NEXT
  671. 7720 IF HAZI=1 THEN GOTO *TORI2 ELSE *TORAZU2
  672. 7730 *TORI2:XEND2=XB13:YEND2=YB13:XEND3=XB12:YEND3=YB12:GOTO *TORAZU2
  673. 7740 *TORAZU2
  674. 7750 RETURN
  675. 7760 '
  676. 7770 *KESI_KAKI2
  677. 7780 FOR J=1 TO MJ
  678. 7790   XB11=XT1      :YB11=YT1
  679. 7800   XB12=XT1+XBT  :YB12=YT1+YBT:YB12=FIX(YB12)
  680. 7810   XB13=XT1+2*XBT:YB13=YT1
  681. 7820   XE1=XT1+XBT   :YE1=YT1+YBT+100
  682. 7830 '
  683. 7840   XB21=X1_X      :YB21=Y1_Y
  684. 7850   XB22=X1_X+XBT  :YB22=Y1_Y+YBT':YB22=FIX(YB22)
  685. 7860   XB23=X1_X+2*XBT:YB23=Y1_Y
  686. 7870   XE2=X1_X+XBT   :YE2=Y1_Y+YBT+100
  687. 7880 '
  688. 7890   IF PP=2 THEN GOTO 7910
  689. 7900   CONNECT (XB12,YB12)-(XB11,YB11)-(XB11,YE1)-(XB13,YE1)-(XB13,YB13)-(XB12,YB12),0,PSET,F,0:GOTO 7920
  690. 7910   CONNECT (XB12,YB12-2)-(XB11+1,YB11)-(XB11+1,YE1)-(XB13-1,YE1)-(XB13-1,YB13)-(XB12,YB12-2),0,PSET,F,0
  691. 7920   WAIT TW
  692. 7930 '
  693. 7940   LINE (XB22,YB22)-(XB23,YB23),PSET,C2
  694. 7950   LINE (XB21,YB21)-(XB22,YB22),PSET,C2
  695. 7960   CIRCLE (XB21,YB21)-(XE2,YE2)-(XB23+1,YB23),C2,PSET
  696. 7970   PAINT(X1_X+XZ,Y1_Y+YZ),&H0C0C0C0CC0C0C0C0,C2
  697. 7980   WAIT TW
  698. 7990 '
  699. 8000   X1_X=XB23:Y1_Y=YB23
  700. 8010   XT1=XB13:YT1=YB13
  701. 8020 NEXT
  702. 8030 IF HAZI=1 THEN GOTO *TORI ELSE GOTO *TORAZU
  703. 8040 *TORI:XEND1=XB22:YEND1=YB22:YTOP1=YE2:GOTO *TORAZU
  704. 8050 *TORAZU
  705. 8060 RETURN
  706. 8070 '
  707. 8080 *NAKA_KAKI
  708. 8090 LINE(X,Y)-(KNXL,KNY0),PSET,C2:LINE(X,Y)-(KNXR,KNY0),PSET,0
  709. 8100 CIRCLE (KNXL,KNY0)-(X,YE0)-(KNXR,KNY0),0,PSET
  710. 8110 LINE(X,YNAKA)-(KNXL,KNY),PSET,C2:LINE(X,YNAKA)-(KNXR,KNY),PSET,C2
  711. 8120 CIRCLE (KNXL,KNY)-(X,YE1)-(KNXR,KNY),C2,PSET
  712. 8130 PAINT(X,YP),&H0C0C0C0CC0C0C0C0,C2:WAIT TW
  713. 8140 RETURN
  714. 8150 '
  715. 8160 *HELP
  716. 8170 LINE(22,410)-(620,470),PSET,%5,BF'
  717. 8180 READ A$,PS
  718. 8190 MOZI=LEN(A$):SPACE=(640-MOZI*8)/2
  719. 8200 SYMBOL@(SPACE,PS),A$,1!,1!,2
  720. 8210 RETURN
  721. 8220 '
  722. 8230 *OWARI
  723. 8240 RESTORE *WH5
  724. 8250 GOSUB *HELP'
  725. 8260 LINE (142,419)-(242,445),PSET,1,B:LINE(270,419)-(370,445),PSET,1,B
  726. 8265 LINE (397,419)-(497,445),PSET,1,B
  727. 8270 MOUSE 0:MOUSE 1,313,426,1
  728. 8280 X=MOUSE(4,0):Y=MOUSE(5,0)
  729. 8290 IF Y<419 OR Y>449 THEN GOTO 8280
  730. 8310 IF X>142 AND X<242 THEN *OSIMAI
  731. 8312 IF X>270 AND X<370 THEN *MOITIDO
  732. 8315 IF X>397 AND X<497 THEN *MENUU
  733. 8320 *MOITIDO
  734. 8330 LINE(22,410)-(620,470),PSET,%5,BF
  735. 8340 MOUSE 5
  736. 8350 LINE(12,40)-(627,320),PSET,0,BF:LINE(14,42)-(625,318),PSET,1,B'
  737. 8360 GOSUB *GAMEN
  738. 8370 GOTO *HAZIME
  739. 8380 '
  740. 8390 *OSIMAI
  741. 8400 LINE(22,410)-(620,470),PSET,%5,BF
  742. 8410 MOUSE 5
  743. 8420 SYSTEM
  744. 8430 '
  745. 8431 *MENUU
  746. 8432 MOUSE 5
  747. 8433 CHAIN "MENU2.BAS",,ALL
  748. 8434 RUN "MENU2.BAS"
  749. 8435 '
  750. 8440 *MODE_SETTEI
  751. 8450 LINE(22,405)-(620,470),PSET,%5,BF
  752. 8460 SYMBOL@(25,406),"どちらか  選んで下さい。",1!,1!,6
  753. 8470 SYMBOL@(90,427),"■ 解説を見ながらやる(初めての人はぜひこちらで)",1!,1!,6
  754. 8480 SYMBOL@(90,448),"■ 解説抜きのハイスピードモードでやる。",1!,1!,6
  755. 8490 MOUSE 0:MOUSE 1,69,436,1
  756. 8500 X=MOUSE(4,0):Y=MOUSE(5,0)
  757. 8510 IF Y>427 AND Y<445 THEN *LOW
  758. 8520 IF Y>448 AND Y<466 THEN *HIGHI
  759. 8530 GOTO 8500
  760. 8540 *LOW
  761. 8550 SPEED=0:MOUSE 5:LINE(22,405)-(620,470),PSET,%5,BF:RETURN
  762. 8560 *HIGHI
  763. 8570 SPEED=1:MOUSE 5:LINE(22,405)-(620,470),PSET,%5,BF:RETURN
  764.